<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 箭头函数 格式
    // let fn = (a,b) => {
    //   let res = a + b;
    //   return res;
    // };
    // let r = fn(100, 200);
    // console.log(r);

    //1. 语法简洁
    //2. 没有自己的 this
    let obj = {
      method(){
        //声明一个箭头函数
        let fn = () => {
          //输出 this 的值
          console.log(this);
        }
        fn();
      }
    }
    // obj.method();

    //3. 不能实例化对象
    let obj2 = (a, b) => {
      this.a = a;
      this.b = b;
    }
    // let c = new obj2();//这里会报错 obj2 is not a constructor

    //4. 函数内部不能使用 arguments
    let add = () => {
      // console.log(arguments); //arguments is not defined
    }

    add(1,2,3,4,5);

    //5. 箭头函数的简写
    //不写小括号的情况, 形参有且只有一个
    // let pingfang = x => {
    //   return x * x;
    // };
    // console.log(pingfang(10));

    //不写大括号的情况, 代码块只有一行表达式
    // let sub = (a,b) => a - b;// 此时, 表达式的值就是函数的返回值
    // console.log(sub(100, 20));

    //一些简写的用法
    // let test = a => a;
    // let test = a => a * a;
    let test = a => () => a;

    let fn = test(10);
    console.log(fn());




    

  </script>
</body>
</html>